Skip to content

feat: Add Headscale v0.29.2 support and polish ACL workflows#103

Open
serein-213 wants to merge 26 commits into
GoodiesHQ:mainfrom
serein-213:headscale-0292-update
Open

feat: Add Headscale v0.29.2 support and polish ACL workflows#103
serein-213 wants to merge 26 commits into
GoodiesHQ:mainfrom
serein-213:headscale-0292-update

Conversation

@serein-213

Copy link
Copy Markdown

Description

This PR builds on the i18n and ACL management work in #98 and brings the admin panel up to Headscale v0.29.2. It includes the Headscale v0.29 API updates, newer ACL policy capabilities, and follow-up stability and mobile usability fixes found while testing the updated ACL workflows.

Key Changes

Headscale v0.29.2 support

  • Updated the UI/version alignment for Headscale v0.29.2.
  • Added Headscale v0.29 policy/auth controls, including ACL auth request register/approve/reject flows.
  • Preserved support for newer ACL fields such as grants, nodeAttrs, tests, sshTests, and randomizeClientPort.

ACL workflow polish

  • Lazy-load heavier ACL/editor sections to reduce the initial bundle loaded on first navigation.
  • Hardened ACL tab loading so stale dynamically loaded sections cannot render with the wrong props.
  • Made the auth approvals page load users on demand and show retry/empty states.

Mobile and first-run UX

  • Improved the mobile language selection page so the primary actions remain reachable on small screens.
  • Improved mobile ACL tabs so long active labels such as Auth Approvals no longer collapse into vertical text.

Tooling and maintenance

  • Migrated lint configuration to ESLint 9 flat config.
  • Aligned Prettier/i18n formatting so generated locale files stay consistent with formatting checks.

Motivation

Headscale 0.29 introduced ACL and auth workflow changes that are useful to expose in the admin UI. This PR keeps the i18n-enabled ACL management direction from #98 moving forward while improving runtime resilience and mobile ergonomics for real usage.

Testing

  • npm run lint
  • npm run check
  • npm run test -- --run
  • npm run build
  • Verified the mobile language selection screen at small viewport widths.
  • Verified ACL auth approvals and mobile ACL tab layout at a 393px mobile viewport.

serein-213 and others added 26 commits February 9, 2026 23:13
- Integrated svelte-i18n for localization.

- Extracted hardcoded strings to locale files.

- Added English (en) and Chinese Simplified (zh) localizations.
- Updated API integration for Headscale v0.27/v0.28 changes.

- Added ACL management UI (Policies, SSH Rules, Groups, Tag Owners).

- Refactored state management using States.svelte.ts.
…icies

- Implemented ExportModal for exporting data in JSON and CSV formats.
- Added BatchOperationsBar for batch actions on nodes including delete and tag operations.
- Enhanced nodes, routes, settings, and users pages with export buttons.
- Created export utility functions for various data types.
- Introduced a new page for displaying individual node details.
- Updated Svelte configuration for base path handling.
- Added support for batch operations in the nodes view.
Align Headscale 0.28 API and add first-run language gate
- Add new auth endpoints: POST /api/v1/auth/register, /approve, /reject
- Add CheckPolicy endpoint for ACL policy validation
- Update expireNode to support disableExpiry parameter
- Add 'never expire' button to node expiry UI
- Add 'Validate Config' button to ACL Config page
- Update i18n translations (en/zh)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants